Articles of unix

unix和windows文件的区别

我是否正确地认为“windows文件”和“unix文件”之间的唯一区别是换行符? 我们有一个系统已经从一台Windows机器移动到一个unix机器,并有格式的麻烦。 我需要在文件传送到我们的“传输系统”中的系统之前自动化unix / windows之间的转换。 我可能需要一些东西来确定当前的格式,并将其转换为其他格式。 如果只是换行这是最大的区别,那么我正在考虑用java.io来读取文件。 据我所知,他们能够处理与readLine。 然后把每一行写回去 while (line = readline) print(line + NewlineInOtherFormat) …. 概要: samjudson : 这只是文本文件的不同之处,UNIX使用单个换行(LF)来表示新行,Windows使用回车/换行(CRLF),而Mac仅使用CR。 Cebjyre阐述: OS X使用LF,与UNIX相同 – MacOS 9和更低版本使用CR 莫 国家字符的字符编码也可能有所不同。 没有“unix编码”,但许多linux变体使用UTF-8作为默认编码。 Mac OS(也是unix)使用自己的编码(macroman)。 我不知道,默认的编码是什么窗口。 麦克道尔 除了换行符之外,如果在Windows上将文件视为Unicode,则字节顺序标记可能会导致问题。 Cheekysoft 但是,您可能遇到的另一组问题可能与单/多字节字符编码有关。 如果你看到奇怪的意外字符(不在行尾),那么这可能是原因。 特别是如果您看到方框,问号,颠倒的问号,多余的字符或意外的重音字符。 塞迪 在unix上,以。开头的文件。 被隐藏。 在Windows上,这是一个文件系统的标志,你可能不容易访问。 这可能会导致应该隐藏的文件现在在客户端机器上可见。 两者之间的文件权限不尽相同。 您可能会发现,当您将文件复制到unix系统时,这些文件现在属于执行复制的用户并且权限有限。 你需要使用chown / chmod来确保正确的用户有权访问它们。 有一些工具可以帮助解决这个问题: pauldoo 如果你只是对文本文件的内容感兴趣,那么行结尾是不同的。 看看像dos2unix,这可能是在这里的帮助。 Cheekysoft 正如pauldoo所build议的,像dos2unix这样的工具可能非常有用。 […]

用bash设置一个参数

我经常运行一个简单的bash命令: rpm -Uvh –define "_transaction_color 3" myPackage.rpm 哪个工作正常。 但是现在我试图把它编写成一个bash文件,并且使它更加灵活: #!/bin/bash INSTALL_CMD=rpm INSTALL_OPT="-Uvh –define '_transaction_color 3'" ${INSTALL_CMD} ${INSTALL_OPT} myPackage.rpm 但是,这不断产生错误: error: Macro % has illegal name (%define) 错误来自于如何处理–define和引用的_transaction_color 。 我已经尝试了各种各样的转义,不同的措辞,甚至使INSTALL_OPT数组,处理${INSTALL_OPT[@]} 。 到目前为止,我的尝试没有奏效。 显然,我想要的是非常简单的。 我只是不知道如何完成它。 我怎样才能让bash正确处理我的–define参数?

如何设置文件权限(跨平台)

我正在使用C ++ ofstream来写出一个文件。 我想将权限设置为只能由用户访问:700.在unix中; 我想我可以发出一个system("chmod 700 file.txt"); 但是我需要这个代码来在Windows上工作。 我可以使用一些Windows API; 但是什么是最好的c ++跨平台的方式来做到这一点?

C运行时对象,dll边界

deviseC API的最佳方法是处理传递与C运行时相关的“对象”(FILE *,由malloc返回的指针等)的问题。 例如,如果两个DLL与不同版本的运行时间链接,我的理解是,您不能安全地将一个DLL从一个DLL传递给另一个DLL。 是唯一的解决scheme使用Windows相关的API(这是保证在DLL工作)? C API已经存在,并且已经成熟,但是主要是由unixdevise的(当然还是要在unix上工作)。

Python产生一个子subprocess,分离并退出

我想知道这是否是正确的方式来执行系统进程并从父母分离,但允许父母退出而不创build僵尸和/或杀死subprocess。 我目前正在使用的subprocess模块,这样做… os.setsid() os.umask(0) p = subprocess.Popen(['nc', '-l', '8888'], cwd=self.home, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) os.setsid()更改进程组,我相信这是进程在父进程退出时继续运行的原因,因为它不再属于同一个进程组。 这是正确的,这也是一个可靠的方式来执行此? 基本上,我有一个远程控制实用程序通过套接字进行通信,并允许远程启动进程,但是我必须确保,如果远程控制器死亡,它启动的进程继续运行不受影响。 我正在阅读有关双叉,不知道这是否是必要的和/或subprocess.POpen close_fds以某种方式照顾,所需的一切是改变进程组? 谢谢。 伊利亚

Linux / Unix中“性能计数器”的概念

Windows具有性能计数器基础结构。 操作系统提供了一些常用的计数器,我可以自己添加。 Linux / Unix中相应的概念是什么?

如何从存储在文件中的进程列表中运行第一个进程,并删除第一行,就好像该文件是一个队列,我称之为“stream行”?

如何从存储在文件中的进程列表中运行第一个进程,并立即删除第一行,就好像该文件是一个队列,我称之为“stream行”? 我想用简单的文本文件中列出的第一个命令用\ n作为分隔符,用stream行的方式: 图1: cmdqueue.lst : proc_C1 proc_C2 proc_C3 . . 图2: 通过popcmdpopup第一个命令: proc_A | proc_B | popcmd cmdqueue.lst | proc_D 图3: cmdqueue.lst : proc_C2 proc_C3 proc_C4 . .

subprocess接收父节点的SIGINT

我有一个使用Qt框架的简单程序。 它使用QProcess来执行RAR并压缩一些文件。 在我的程序中,我正在捕获SIGINT,并在发生代码时做了一些事情: signal(SIGINT, &unix_handler); 当SIGINT发生时,我检查RAR进程是否完成,如果不是,我会等待它…问题是(我认为)RAR进程也得到了SIGINT,这是我的程序的意思,它退出之前压缩了所有文件。 有没有办法运行RAR进程,以便它在我的程序收到它时不会收到SIGINT? 谢谢

我想运行一个命令通过使用C#

请注意,这必须在一个窗口框,因为我使用C#来访问有关窗口的信息 (我需要从一个窗口框和一个Linux的盒子的信息,再加上我认为,使一个程序/脚本运行无gui和访问窗口从一个Linux的盒子没有用户干预将更加困难,如果这不是真的,请告诉我,我很乐意做这个只能运行在Windows上的窗口信息的部分* nix)。 有一个很好的c#api从窗口获取这个信息,在* nix上,它足够简单的运行一个命令,并parsing输出到我的需要。 关于从c#中使用ssh似乎没有太多像样的build议,sharpSSH和Granados似乎还没有更新多年,他们是否体面? 我应该担心安全问题吗? (我正在检索的信息并不敏感,但如果ssh实现可能有未修补的安全漏洞(如果它们还没有更新多年),我担心有人窃取我的凭据。 有没有其他像样的c#ssh库。 如果命令输出很简单,我应该只运行plink / putty(运行windows cmd shell for plink很困难,并捕获输出(有没有办法做到这一点,而没有壳popup)? PS,而商业图书馆看起来不错,我更喜欢免费的东西(如果可能,在成本和免费源代码)。

有没有办法改变Unix的另一个进程的环境variables?

在Unix上,有没有什么办法可以让一个进程改变别人的环境variables(假设他们都是由同一个用户运行的)? 一般的解决办法是最好的,但如果不是,那么一个是另一个的孩子的具体情况呢? 编辑:如何通过GDB?