Show toolbar

2011年7月20日 星期三

PHP exec C

標題:PHP與C相互傳遞與接收
程式:
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來做修改可能會導致資料錯誤的發生。

沒有留言:

張貼留言