RSS   



  可打印版本 | 推薦給朋友 | 訂閱主題 | 收藏主題 | 純文字版  


 


 
主題: [C&C++] [求助]關於execl函式的使用問題   字型大小:||| 
TC-E
驢有所悟
等級: 3等級: 3


 . 積分: 15
 . 文章: 274
 . 收花: 6 支
 . 送花: 5 支
 . 比例: 0.83
 . 在線: 69 小時
 . 瀏覽: 3411 頁
 . 註冊: 8208
 . 失蹤: 1275
#1 : 2007-3-22 01:10 PM     只看本作者 引言回覆

是這的,我想要用C++撰寫一段整合一些工具的程式
希望可以在Linux下執行,我找到了相關的函式execl
不過現在有個問題,就是原本在shell下可以用ls>>out.txt
的方式來將輸出資料導向文字檔內,但是execl我怎麼試
都無法做到這一點,其實我是希望利用execl呼叫我要的工具
並將其output寫入檔案以方便處理,不知道有哪位高手對此
比較有研究的,可以提供一些幫忙!


引用:

#include <unistd.h>
int main()
{
  int ret;
  ret = execl ("/bin/ls", "ls", "-1", (char *)0);
  return 0;
}



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
aleck
鐵驢友〔初級〕
等級: 4


 . 積分: 43
 . 文章: 70
 . 收花: 171 支
 . 送花: 5030 支
 . 比例: 29.42
 . 在線: 885 小時
 . 瀏覽: 23730 頁
 . 註冊: 7219
 . 失蹤: 936
#2 : 2007-3-22 10:58 PM     只看本作者 引言回覆

參考一下:

先 open 一個 file:
int fd = open("out.txt", O_RDWR|O_CREAT, 0666);

再將標準輸出 dup2 導向 fd:
dup2(fd, 1);

再執行 execl:
execl ("/bin/ls", "ls", "-1", (char *)0);

最後 close fd.
close(fd);

完成.



[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記
TC-E
驢有所悟
等級: 3等級: 3


 . 積分: 15
 . 文章: 274
 . 收花: 6 支
 . 送花: 5 支
 . 比例: 0.83
 . 在線: 69 小時
 . 瀏覽: 3411 頁
 . 註冊: 8208
 . 失蹤: 1275
#3 : 2007-3-28 12:16 PM     只看本作者 引言回覆

感謝,你的資訊可以解決我的問題唷!


引用:

#include <stdio.h>
#include <unistd.h>
int main()
{
  FILE *fp;
  int ret;
  int id,fd;
  fp=fopen("/home/user/00.txt","w");
  id = dup(STDOUT_FILENO);
  fd=fileno(fp);
  dup2(fd, STDOUT_FILENO);
  ret = execl ("/bin/ls", "ls", "-1", (char *)0);
  dup2(id, STDOUT_FILENO);
  fclose(fp);
  return 0;
}




[如果你喜歡本文章,就按本文章之鮮花~送花給作者吧,你的支持就是別人的動力來源]
本文連接  
檢閱個人資料  發私人訊息  Blog  快速回覆 新增/修改 爬文標記

   

快速回覆
表情符號

更多 Smilies

字型大小 : |||      [完成後可按 Ctrl+Enter 發佈]        

溫馨提示:本區開放遊客瀏覽。
選項:
關閉 URL 識別    關閉 表情符號    關閉 Discuz! 代碼    使用個人簽名    接收新回覆信件通知
發表時自動複製內容   [立即複製] (IE only)


 



所在時區為 GMT+8, 現在時間是 2024-11-22 01:16 AM
清除 Cookies - 連絡我們 - TWed2k © 2001-2046 - 純文字版 - 說明
Discuz! 0.1 | Processed in 0.025558 second(s), 8 queries , Qzip disabled