我正在編寫一個Perl腳本來生成帶有文本的圖像。我在一臺Linux機器上。我正在使用pbmtextps
。當我嘗試使用系統調用像這樣系統調用運行pbmtextps:ghostscript
system("pbmtextps -fontsize 24 SampleText > out.pbm");
我收到此錯誤信息
pbmtextps: failed to run Ghostscript process: rc=-1
但是,如果我跑完全相同的pbmtextps運行在Perl pbmtextps在命令行以外的命令Perl,它運行時沒有錯誤。
爲什麼它會在Perl腳本中運行時導致ghostscript錯誤?
其他信息:我試圖通過創建一個名爲mypbmtextps.c的C代碼來解決此問題,該代碼與C系統調用完全相同。這從命令行起作用。沒有錯誤。但是當我從Perl腳本中調用該C程序時,我得到了相同的ghostscript錯誤。
回答:我解決了。問題是PERL腳本中的這一行: $ SIG {CHLD} ='IGNORE'; 當我擺脫那(我需要其他的東西,但不是在這個腳本)它運作良好。如果有人知道爲什麼會導致問題,請添加解釋。
請注意,系統運行它在/ bin/sh中的參數。當你在外部運行'pbmtextps'命令時,你正在運行它(它是一個csh/tcsh)? – sateesh
我在/ bin/sh,/ bin/csh和/ bin/tcsh中沒有任何錯誤地在外部運行命令。 –