Nowadays, the Internet of Things (IoT) is playing a great role in humans’ daily life. IoT enables many smart applications in a variety of domains, including smart city, healthcare, smart grid, video surveillance, etc. Due to the popularity and growth of these applications, the number of the IoT devices are dramatically increasing. So it is expected that a tremendous amount of data is generated by these devices, which may require real-time processing. However, most of IoT devices are limited in terms of computational power, storage, and battery life. Hence, more powerful devices are required for processing and storage services. Cloud computing infrastructure can be used to host the IoT applications. Nevertheless, the geographically distributed nature of the IoT applications does not match with the centralized nature of the cloud data centers. Fog computing paradigm is introduced as a complement to the cloud computing to fulfillment the requirements of IoT applications. This computing model is known as fog-cloud computing system. In this paper, we first describe the architecture of IoT-Fog-Cloud systems. Then we introduce some important challenges in such systems. And, finally, we discuss some of the current research directions in the aforementioned systems.