[問題] 有關exec()在linux上的使用

看板Linux作者 (也太空虛了八?)時間15年前 (2011/02/01 20:51), 編輯推噓1(1014)
留言15則, 5人參與, 最新討論串1/1
這有一個程式是用python寫的 然後我現在要用php用system call的方式 把這個程式的output出來成為一個xml的格式 <? $now=date("Y-m-d-h-i"); $newfile=fopen("/home/wei/outputs/".$now.".txt",'w+') //建立一個可寫的檔案然後是空白的 exec("cd /home/wei/app"); exec("/home/wei/app/app.py 參數 >/home/wei/outputs/".$now.".txt"); //把她輸出的結果輸到該txt檔 可是就很奇怪不能work 但如果我沒丟變數的話 就有辦法寫進去那個檔案裏面 有人知道為什麼嗎?有點不知道在這裡問恰不恰當拜託大家了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.104.48 unhappy:轉錄至看板 PHP 02/01 20:52

02/01 21:07, , 1F
/home/wei/outputs/ 的權限勒????
02/01 21:07, 1F

02/01 21:13, , 2F
有我有把它 chmod -R 777
02/01 21:13, 2F

02/01 22:26, , 3F
exec("/usr/bin/python /home/wei ..... ); 這樣行嗎
02/01 22:26, 3F

02/02 02:54, , 4F
你把第一行 exec 註解掉看看... 雖然我跟 python 不太熟
02/02 02:54, 4F

02/02 02:55, , 5F
但是如果是一隻 C 的程式 在呼叫第一次 exec 之後會把自
02/02 02:55, 5F

02/02 02:56, , 6F
己在記憶體內的空間全部換掉 換成 exec 內的那支程式...
02/02 02:56, 6F

02/02 02:57, , 7F
所以除非玩 fork 讓分身的子行程去被替換掉 不然 exec 之
02/02 02:57, 7F

02/02 02:58, , 8F
後的程式碼有可能都沒被跑到... 你試著在兩行 exec 中間
02/02 02:58, 8F

02/02 02:58, , 9F
插行簡單的除錯訊息 再去跑 看看是不是我說的狀態...
02/02 02:58, 9F

02/02 03:07, , 10F
當我沒說... 應該是有跑到第二個 exec 只是給變數的時候
02/02 03:07, 10F

02/02 03:07, , 11F
不正常(?) 是指說 ".$now." 這邊嗎...
02/02 03:07, 11F

02/02 03:15, , 12F
看他的描述應該是「參數」那邊一加上去就會不正常
02/02 03:15, 12F

02/02 17:11, , 13F
是now那邊好像有點問題 後來我把兩個指令寫成一個.sh
02/02 17:11, 13F

02/02 17:11, , 14F
就可以了:)
02/02 17:11, 14F

02/18 10:10, , 15F
use popen()
02/18 10:10, 15F
文章代碼(AID): #1DI07dTy (Linux)