Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么这个Python函数会创建一个Unix可执行文件?_Python_Macos_Unix - Fatal编程技术网

为什么这个Python函数会创建一个Unix可执行文件?

为什么这个Python函数会创建一个Unix可执行文件?,python,macos,unix,Python,Macos,Unix,我正在创建一个基本的套接字服务器,以自学更多的网络知识。在尝试创建它时,我决定尝试创建一个“聊天日志”。我的计划是让服务器后端脚本(驱动Tkinter GUI的脚本)将所有发送的消息附加到名为old_msg.txt的文本文件中 为此,我创建了一个名为old\u msg的函数。这里定义了它 def old_msg(data): while True: oldmsg = open("old_msg.txt", "a+") try: ol

我正在创建一个基本的套接字服务器,以自学更多的网络知识。在尝试创建它时,我决定尝试创建一个“聊天日志”。我的计划是让服务器后端脚本(驱动Tkinter GUI的脚本)将所有发送的消息附加到名为
old_msg.txt
的文本文件中

为此,我创建了一个名为
old\u msg
的函数。这里定义了它

def old_msg(data):
    while True:
        oldmsg = open("old_msg.txt", "a+")
        try:
            oldmsg.write("%s \n" % (data))
        except TypeError:
            print "SERVER MSG >>> NO MESSAGE SENT"
        oldmsg.close()
我在另一个函数中调用它,
clientthread
,如果数据不是空的,它会追加数据

while True:

    #Receiving from client
    data = connection.recv(1024)
    if not data:
        break
    if data:
        connection.sendall(data)
        old_msg(data)
    print data

connection.close()
通常,此代码会创建一个
UNIX\u可执行文件。
它被称为
old\u msg
,下面是shell中显示的一些文本。这被重复了数千次

/Volumes/***'s USB/Python Programs/Sockets/IM Project/Server/Different Idea/old_msg: line 43159: hello: command not found
/Volumes/***'S USB/Python Programs/Sockets/IM Project/Server/Different Idea/old_msg: line 43160: hello: command not found
logout
为什么这段代码会创建一个unix可执行文件

编辑


我向服务器发送了消息“Hello World”。您可以找到pastebin

此代码不创建unix可执行文件。但不知何故,您已将文件的可执行位设置为true。但是,您的代码不会执行此操作。

此代码不会创建unix可执行文件。但不知何故,您已将文件的可执行位设置为true。但是,您的代码没有这样做。

这是一个部分答案。我对其他人开放——这只是我发现的东西。

我认为我的代码的问题在于旧的_msg(data)变量中的
while True
行。当我摆脱它时,脚本/exec/无论它是什么都没有被创建


问题是来自
old_msg()
函数的双循环和
clientthread
函数中的另一个循环。

这是部分答案。我对其他人开放——这只是我发现的东西。

我认为我的代码的问题在于旧的_msg(data)变量中的
while True
行。当我摆脱它时,脚本/exec/无论它是什么都没有被创建



问题是来自
old_msg()
函数的双循环和
clientthread
函数中的另一个循环。

此代码编写一个文本文件
old_msg.txt
,其中包含消息,
hello world
。此文本文件使用非UNIX文件系统(如FAT32)写入USB磁盘或U盘。因此,文本文件默认设置了执行位。这是因为FAT32没有执行位,Mac OS X显示和使用的UNIX权限由操作系统组成。另外,Mac OS X似乎对您隐藏了扩展名
.txt
(我相信在Finder的设置中这是可调的)。因此,您将得到一个名为
old\u msg
的可执行文件。当你点击它来运行它时,操作系统试图将它解释为一个脚本,这将导致你看到的错误消息;消息的第一个单词
hello world
被解释为要运行的UNIX命令的文件名。

此代码编写一个文本文件
old_msg.txt
,其中包含消息
hello world
。此文本文件使用非UNIX文件系统(如FAT32)写入USB磁盘或U盘。因此,文本文件默认设置了执行位。这是因为FAT32没有执行位,Mac OS X显示和使用的UNIX权限由操作系统组成。另外,Mac OS X似乎对您隐藏了扩展名
.txt
(我相信在Finder的设置中这是可调的)。因此,您将得到一个名为
old\u msg
的可执行文件。当你点击它来运行它时,操作系统试图将它解释为一个脚本,这将导致你看到的错误消息;消息的第一个单词
hello world
被解释为要运行的UNIX命令的文件名。

您所说的“创建UNIX_可执行文件”到底是什么意思?@NPE我的意思是它在mac上创建一个在终端中打开的文件。它的图标上写着exec。我看不出你展示的任何代码是如何做到这一点的。你一定遗漏了什么。你是否设置了文件的可执行位?否则,即使是意外地“执行”文件,也应该说是权限denied@npe我在pastebin上添加了整个代码。你可以看看。你所说的“创建一个UNIX_可执行文件”到底是什么意思?@NPE我的意思是它在mac上创建一个在终端中打开的文件。它的图标上写着exec。我看不出你展示的任何代码是如何做到这一点的。你一定遗漏了什么。你是否设置了文件的可执行位?否则,即使是意外地“执行”文件,也应该说是权限denied@npe我在pastebin上添加了整个代码。你可以看看。那条线怎么不是一个无限循环?那条线怎么不是一个无限循环?不仅如此,没有关于启动一个进程的参考,没有“hello”这个词,也没有任何接近那么多行的东西。这里似乎没有足够的信息来获取完整的图片。我相信OP是通过在Finder中双击脚本来运行脚本的。我从我的消息中得到了hello消息-“hello World”,不仅如此,没有关于启动进程的参考,也没有“hello”这个词或任何接近于这么多行的内容。这里似乎没有足够的信息来获取完整的图片。我相信OP通过在Finder中双击脚本来运行脚本。我从我的消息“hello World”中得到了hello