程式:
PHP (index.php):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <?php //傳遞變數給exe執行檔 $text = exec ( "chello\\chello.exe Hello PHPBoxy" , $arr ); //印出陣列大小 echo count ( $arr ). "<br /><br />" ; //印出陣列結果 foreach ( $arr as $value ) echo $value . "<br />" ; //僅印出最後一行 echo "<br />" . $text ; ?> |
C (chello\chello.exe):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | #include <stdio.h> #include <stdlib.h> #include <string.h> int main( int argc, char ** argv) { char str1[1024], str2[1024], str3[1024]; if (argc > 1) { strncpy (str1,argv[0], sizeof (str1)-1); strncpy (str2,argv[1], sizeof (str2)-1); strncpy (str3,argv[2], sizeof (str3)-1); printf ( "%s\n%s\n%s" , str1, str2, str3); } else { printf ( "%d\n" , argc); } return (EXIT_SUCCESS); } |
輸出結果:
說明:
利用PHP傳遞『Hello』與『PHPBoxy』兩個字串給執行檔接收,
再經由C/CPP程式printf回傳給PHP三行字串內容,
注意當argv需要做字串的處理時必須要重新複製一份來進行修改,
若直接使用argv來做修改可能會導致資料錯誤的發生。
沒有留言:
張貼留言