2008-09-28 18 views
4

我有一個需要使用exec系列的項目。我的項目包括製作交互式外殼。 shell將執行一些基本的命令,如cd,ls,echo等。我一直在研究exec的使用,但還沒有找到有用的站點。任何建議的鏈接都有幫助。exec系列

int ret; 
ret = execl ("/bin/ls", "ls", "-1", (char *)0); 

我將如何獲得此操作的輸出以顯示在屏幕上?

回答

2

你寫的代碼適用於我的一個簡單的測試程序,除此之外別無其他。請記住,當您調用execl時,該過程將保留所有舊文件句柄。因此,無論您調用execl時使用的標準輸出是什麼,當新的二進制文件加載時都是一樣的。如果你只是希望輸出到終端,只要確保stdout進入終端。

如果你想用另一個程序做I/O,popen對此很有用(如mgb提到)。它將分叉一個新進程,爲你設置管道,調用exec的一個變體,並返回一個可用於通信的文件句柄。

4


int fd = 1; 
dup(fd); 
close(fd); 

獲取輸出到屏幕上。