使用 Python 检查 gcc 警告
Checking gcc warnings using Python
下面是我编写的 python 脚本中的一小段代码。该脚本的目的是编译各种 C 文件。 (我修改了片段并简化了它以符合问题的目的。)
fileName = "somefile.c"
my_cmd = "gcc -std=c99 -Wall " + fileName[-2:0] + " .o " + fileName
os.system(my_cmd)
这很好用。但我想跟踪哪些文件在没有警告的情况下编译,哪些文件显示警告。
检查文件是否编译成功没有问题。我可以检查 return 的 os.system() 值,或者我可以检查是否创建了相应的目标文件。
但是我如何检查 somefile.c 在编译过程中是否有任何警告?谢谢!
我试过的:
我尝试使用“>”运算符(重定向),但它不起作用。我使用了类似的东西:
os.system(my_cmd + " > output")
无论 somefile.c 的内容是什么,名为 output 的文件总是被创建并且是空的!!
进程通常有两个输出流。一个是 stdout
,文件编号为 1
,并且(不出所料)用于标准输出。另一个用于错误和警告,通常称为 stderr
,文件编号为 2
。要在 shell 中重定向 stderr
,您可以这样做:
gcc file.c -o file 2> some_file
这将为您提供一个名为 "some_file" 的文件,其中包含 gcc 写入 stderr 的所有内容(包括您想要的信息)。将其用作带 os.system
的字符串会起作用,但 高度 不推荐。您应该(几乎可以肯定)改用 subprocess
模块。这是一个例子:
import subprocess as s
p = s.Popen(["gcc", "-std=c99", "-Wall", "test.c", "-o", "test"], stdout=s.PIPE, stderr=s.PIPE)
p_stdout, p_stderr = p.communicate()
print "*****STDOUT*****"
print p_stdout
print "*****STDERR*****"
print p_stderr
下面是我编写的 python 脚本中的一小段代码。该脚本的目的是编译各种 C 文件。 (我修改了片段并简化了它以符合问题的目的。)
fileName = "somefile.c" my_cmd = "gcc -std=c99 -Wall " + fileName[-2:0] + " .o " + fileName os.system(my_cmd)
这很好用。但我想跟踪哪些文件在没有警告的情况下编译,哪些文件显示警告。
检查文件是否编译成功没有问题。我可以检查 return 的 os.system() 值,或者我可以检查是否创建了相应的目标文件。
但是我如何检查 somefile.c 在编译过程中是否有任何警告?谢谢!
我试过的:
我尝试使用“>”运算符(重定向),但它不起作用。我使用了类似的东西:
os.system(my_cmd + " > output")
无论 somefile.c 的内容是什么,名为 output 的文件总是被创建并且是空的!!
进程通常有两个输出流。一个是 stdout
,文件编号为 1
,并且(不出所料)用于标准输出。另一个用于错误和警告,通常称为 stderr
,文件编号为 2
。要在 shell 中重定向 stderr
,您可以这样做:
gcc file.c -o file 2> some_file
这将为您提供一个名为 "some_file" 的文件,其中包含 gcc 写入 stderr 的所有内容(包括您想要的信息)。将其用作带 os.system
的字符串会起作用,但 高度 不推荐。您应该(几乎可以肯定)改用 subprocess
模块。这是一个例子:
import subprocess as s
p = s.Popen(["gcc", "-std=c99", "-Wall", "test.c", "-o", "test"], stdout=s.PIPE, stderr=s.PIPE)
p_stdout, p_stderr = p.communicate()
print "*****STDOUT*****"
print p_stdout
print "*****STDERR*****"
print p_stderr