2013-04-16 55 views
3

我想執行一個名爲「helloworld」(源自source.c編譯)的二進制文件,位於另一個目錄中,程序爲notify.c。這裏就是我的文件位於:C - execl():無法執行位於另一個目錄中的文件

/家庭/ morts /桌面/ HelloWorld的

/家庭/ morts /桌面/家庭作業/通知

我嘗試:

const char *cmd = "/home/morts/Desktop/helloworld"; 
execl(cmd, "LOL", NULL); 
perror("execl()"); 
exit(EXIT_FAILURE); 

,但我得到:

execl(): Permission denied 

如果helloworld將位於notify的同一目錄中,我簡單地把「./helloworld」,但因爲它們在不同的目錄中,我該如何解決這個問題?

感謝和問候。

+5

已運行的用戶'notify'權限來執行'helloworld'? –

+0

我想是這樣:如果我輸入 「STAT通知」,我得到: 訪問:(0775/-rwxrwxr-X)發表於:(1000/morts)GID:(1000/morts) 和 「統計的HelloWorld」: (1000/morts)Gid:(1000/morts) – elmazzun

+0

您是否嘗試過'execl(cmd,「helloworld」,「LOL」,NULL);'? –

回答

0

,如果你想通過EXECL不帶任何參數來執行下路/斌/測試的文件你好 嘗試以下操作:

execl("/bin/test/hello", "hello", (char*)NULL);

檢查,否則下面的你可能會得到一個權限拒絕錯誤:

  1. 第一個參數必須是/path/your_file而沒有任何空間
  2. 第二個參數必須是「your_file「一樣第一個參數
  3. 最後一個參數必須是(字符*)NULL
0

您應該檢查的路徑是正確的,你有正確的權限,試圖通過直接在終端運行命令來執行此文件:

/home/morts/Desktop/helloworld 

如果一切正常,那麼你必須檢查運行程序的用戶也有權執行該文件。

+0

/home/morts/Desktop/helloworld工作,並給我你好,世界! – elmazzun

相關問題