2012-11-02 83 views
0

我試圖讓不再獲得運行一些簡單的彙編代碼,但它不寫到標準輸出,出現問題兩種方式與TA爲0x00或TA 0x08的:代碼寫入1,但不寫入標準輸出?

# as -s gah.s -o gah.o 
# ld gah.o -o gah -lc 
# ./gah 
# 
# truss ./gah 
execve("./gah", 0xEFFFFE28, 0xEFFFFE30) argc = 1 
[..] 
open("/usr/platform/SUNW,SPARCstation-20/lib/libc_psr.so.1", O_RDONLY) Err#2 ENOENT 
close(3)          = 0 
write(1, " H e l l o , W o r l d".., 14)  = 14 
_exit(0) 
# file gah 
gah:   ELF 32-bit MSB executable SPARC Version 1, dynamically linked, not stripped 
# echo foo > /dev/fd/1 
foo 
# uname -a 
SunOS foobar 5.6 Generic_105181-05 sun4m sparc SUNW,SPARCstation-20 
gcc version 2.95.2 19991024 (release) 

難道這是一些相關鏈接問題?我似乎看到了桁架輸出中的寫入。

DIS輸出:http://sprunge.us/hMXV

+0

與論壇網站不同,我們不使用「謝謝」或「任何幫助表示讚賞」,或在[so]上簽名。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be - 刪除 - 從帖子)。 –

+0

確定,同意,但爲什麼要刪除代碼? – Juergen

+0

我沒有刪除任何代碼。你是什麼意思? –

回答

0

如果look under the covers,你會看到stdout僅僅是指文件描述符1標準文件描述符。

換句話說,當您寫入stdout時,您會看到一個操作系統調用,指向文件描述符1的點寫操作。

+0

這個答案可能是一個誤解,因爲我知道1和stdout是但是,我不知道,更好地解釋我的問題,但謝謝。 – Juergen