1. 程式人生 > >linux之chdir函式解析

linux之chdir函式解析

[[email protected] chdir]$ ls
chdir.c
[[email protected] chdir]$ cat chdir.c 
/*********************************************************************************
 *      Copyright:  (C) 2013 fulinux<[email protected]
 *                  All rights reserved.
 *
 *       Filename:  chdir.c
 *    Description:  This file 
 *                 
 *        Version:  1.0.0(08/06/2013~)
 *         Author:  fulinux <
[email protected]
>
 *      ChangeLog:  1, Release initial version on "08/06/2013 03:35:13 PM"
 *                 
 ********************************************************************************/


#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>


int main(void)
{
    if(chdir("/tmp") < 0)
    {
        perror("chdir");
        exit(1);
    }
    printf("chdir to /tmp successded\n");
    exit(0);
}
[
[email protected]
chdir]$ gcc chdir.c 
[[email protected] chdir]$ pwd
/home/lingyun/apue/chdir
[[email protected] chdir]$ ./a.out 
chdir to /tmp successded
[[email protected] chdir]$ pwd
/home/lingyun/apue/chdir

[[email protected] chdir]$ 

執行./a.out程式的shell的當前工作目錄沒有變,其原因是建立了一個子程序並由該子程執行./a.out程式。記得有一次我把檔案系統整個都刪了,什麼命令都不能執行,但是cd命令可以,apue上說cd命令是直接包含在shell程式中的。

相關推薦

linuxchdir函式解析

[[email protected] chdir]$ ls chdir.c [[email protected] chdir]$ cat chdir.c  /************************************************

linuxselect函式解析

select()的機制中提供一fd_set的資料結構,實際上是一long型別的陣列, 每一個數組元素都能與一開啟的檔案控制代碼(不管是Socket控制代碼,還是其他 檔案或命名管道或裝置控制代碼)建立聯絡,建立聯絡的工作由程式設計師完成, 當呼叫select()時,由核心根

linuxselect函式用法詳解

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

LinuxGCC命令 -- 解析GCC編譯的四個過程

在Linux下進行C語言程式設計,必然要採用GNU GCC來編譯C原始碼生成可執行程式。Gcc指令的一般格式為: Gcc [選項] 要編譯的檔案 [選項] [目標檔案]。其中,目標檔案可預設,Gcc預設生成可執行的檔名為:編譯檔案.out 看一下經典入門程式"Hello W

linuxgetopt 函式

#include <stdio.h> #include <unistd.h> int main (int argc, char **argv) {     int oc;                     /*選項字元 */     char ec;              

Linux程式設計ioremap函式的例項解析

void * __ioremap(unsigned long phys_addr, unsigned long size, unsigned long flags) 入口: phys_addr:要對映的起始的IO地址; size:要對映的空間的大小; flags:要對映

linuxdup和dup2函式解析

系統呼叫dup和dup2能夠複製檔案描述符。dup返回新的檔案檔案描述符(沒有用的檔案描述符最小的編號)。dup2可以讓使用者指定返回的檔案描述符的值,如果需要,則首先接近newfd的值,他通常用來重新開啟或者重定向一個檔案描述符。 在linux下,通過open開啟以檔案後

[轉載]Linux進程狀態解析R、S、D、T、Z、X

AI 關心 避免 內核函數 正在執行 void 並不會 轉變 說明 Linux是一個多用戶,多任務的系統,可以同時運行多個用戶的多個程序,就必然會產生很多的進程,而每個進程會有不同的狀態。 Linux進程狀態:R (TASK_RUNNING),可執行狀態。只有在該狀態的進程

C# socket 程式設計 accept() 函式返回值解析

accept() 函式會返回一個新的套接字,這個新的套接字在伺服器端與客戶端進行通訊。 伺服器端的繫結監聽是一個套接字,與客戶端通訊的是另一個套接字(accept函式返回的套接字,注意這裡不是返回客戶端的套接字,返回的套接字是新建立在伺服器上的,與客戶端收發訊息用的) 下面這段程式碼,是

linux C函式stat函式

1.函式功能: 通過檔名filename獲取檔案資訊,並儲存在buf所指的結構體stat中 2.函式原型 1)函式標頭檔案 #include <sys/stat.h> #include <unistd.h> 2)函式 int stat(const c

Nginx HTTP請求行解析函式ngx_http_parse_request_line

Nginx的HTTP模組中使用ngx_http_parse_request_line函式來對讀取的請求行進行解析,HTTP請求行的格式不是很複雜,但是要注意HTTP 0.9與1.0、1.1之間的區別;另外,作為Nginx的第一個版本,裡面支援的請求方法也只有GET、POST和HEAD。 /* h

Linux系統中的DNS服務八 動態域名解析(別稱:花生殼)!

DNS的動態域名解析:   dns + dhcp 服務 ==花生殼 >>>>>>>>>動態域名解析!!!   實驗: 給dns-master配置dhcp服務:具體請看:https://mp.csdn.net

Linux系統中的DNS服務四 DNS雙向解析

DNS的雙向解析: 前面我們實驗解釋過了 DNS的正向解析以及DNS的逆向解析;   雙向解析的目的: 如何讓一臺DNS伺服器解析不同網段IP地址的域名給對應IP網段的IP:   開始實驗: 對服務端: 對物理網絡卡eth0再設定一個IP地址:

Linux核心啟動第二階段setup_arch函式分析

轉自:http://blog.chinaunix.net/uid-20672257-id-2383451.html 執行setup_arch()函式 回到start_kernel當中,569行,呼叫setup_arch函式,傳給他的引數是

linux C函式access函式的用法【轉】

1.函式功能: 檢查呼叫程序是否可以對指定的檔案執行某種操作。 2.函式原型: 1)函式標頭檔案 #include <stdio.h> #include <unistd.h> 2)函式 int access(

Linux I/O複用select函式詳解

置頂 2017年02月12日 20:50:08 難免有錯_ 閱讀數:7438更多 select函式的功能和呼叫順序 使用select函式時統一監視多個檔案描述符的: 1、 是否存在套接字接收資料? 2、 無需阻塞傳輸資料的套接字有哪些? 3、 哪些套接字發生了

Linux C高階程式設計——網路程式設計包裹函式

                                    Linux網路程式設計(六)——包裹函式                          宗旨:技術的學習是有限的,分享的精神是無限的。          系統呼叫不能保證每次都成功,必須進行出

Linux C高階程式設計——檔案操作函式

Linux C高階程式設計——檔案操作之庫函式 宗旨:技術的學習是有限的,分享的精神是無限的 ——為什麼要設計標準I/O庫? 直接使用API進行檔案訪問時,需要考慮許多細節問題 例如:read、write時,緩衝區的大小該如何確定,才能使效率最優 標準I/O庫封裝了諸多

【wav音訊解析wavread函式的C++實現

      本文由三部分組成,第一部分背景介紹 —— 音訊型別及本文動機,第二部分類比matlab下wavread()函式的作用,第三部分則給出該函式的C++實現。 一 背景介紹 1.1 本文動機 1)所有wav音訊處理的基礎就是將wav格式的檔案解析出來,解析成陣列才

Linux-C網路程式設計epoll函式

上文中說到如果從100的不同的地方取外賣,那麼epoll相當於一部手機,當外賣到達後,送貨員可以通知你,從而達到每去必得,少走很多路。 它是如何實現這些作用的呢? epoll的功能 epoll是select/poll的強化版,同是多路複用的函式,epoll