Board logo

主題: [C&C++] [求助]關於execl函式的使用問題 [打印本頁]

發表人: TC-E    時間: 2007-3-22 01:10 PM     主題: [求助]關於execl函式的使用問題

是這的,我想要用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;
}

發表人: aleck    時間: 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);

完成.
發表人: TC-E    時間: 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;
}






歡迎光臨 TWed2k (http://twed2k.org/) Powered by Discuz! 4.1.0