2016-06-23 13 views
0

コードの前に動作しません。Linuxのプログラミングは、はexecve

とデバッグにltraceのとstraceのを使用するには、私が得た:

$ strace ./a.out | tee 
mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb766e000 
write(1, "Thu Jun 23 17:48:58 CST 2016\n", 29Thu Jun 23 17:48:58 CST 2016 
) = 29 
close(1) 

$ ltrace ./a.out | tee 
__libc_start_main(0x8048414, 1, 0xbff5fd44, 0x8048470, 0x8048460 <unfinished ...> 
puts("test output")                                = 12 
execv("/bin/date", 0xbff5fd44 <unfinished ...> 
--- Called exec() --- 
...... 
fwrite("Thu", 3, 1, 0xe024e0)                              
strftime(" Jun", 1024, " %b", 0x00e056a0) 
..... 

を「テスト出力」については、プログラムは「プット」と呼んで、これはlibcのライブラリコールですが、カーネル「の書き込みは、」」やりましたと呼ばれる。どうして ?

#include <stdio.h> 
#include <unistd.h> 
int main(int argc, char *argv[]) 
{ 
    printf("test output\n"); 
    flush(stdout); 
    execv("/bin/date", argv); 
    return 0; 
} 

をそして作品:

答えて

1

いくつかの検索の後、fflushは(標準出力)を追加

[email protected]:~/test/1$ ./a.out | tee 
test output 
Thu Jun 23 18:17:09 CST 2016 
関連する問題