Articles of 跨平台

使用Symfony Process运行asynchronousPHP任务

对于耗时的任务(电子邮件发送,image processing…你明白了),我想运行asynchronousPHP任务。 在Linux上这很容易 ,但我正在寻找一种在Windows上工作的方法。 我希望它是简单的,因为它应该是。 没有大炮 ,没有SQL排队,没有再次安装的东西 …我只想运行一个该死的asynchronous任务。 所以我尝试了Symfony过程组件 。 问题是,同步运行任务可以正常工作,但是当它asynchronous运行时,它会沿着主脚本退出。 有没有办法来解决这个问题? composer require symfony/process 的index.php <?php require './bootstrap.php'; $logFile = './log.txt'; file_put_contents($logFile, ''); append($logFile, 'script (A) : '.timestamp()); $process = new Process('php subscript.php'); $process->start(); // async, subscript exits prematurely… //$process->run(); // sync, works fine append($logFile, 'script (B) : '.timestamp()); subscript.php <?php require './bootstrap.php'; $logFile […]

在OS X上编译C程序以在Ubuntu上运行

我有一个非常简单的C程序,只使用标准库函数进行一些encryption计算。 我将在Ubuntu(10.04,32位)上运行该程序,并使用带有-m32标志的cc在OS X 10.6上对其进行编译。 当我试图在Ubuntu上运行它时,我收到错误信息“无法执行二进制文件”。 当我在Ubuntu上编译它运行良好。 有什么简单的方法将OS X上的代码编译成可以在Ubuntu上运行的二进制文件? 如果不是,导致二进制不兼容的区别是什么?

如何在OSX中sorting-V?

我为Linux bash shell写了一个脚本。 一行获取文件名列表并对其进行sorting。 清单看起来像这样: char32.png char33.png […] char127.png 它从32到127.该列表的默认sorting是这样的 char100.png char101.png […] char32.png char33.png […] char99.png 幸运的是,有sort ,有正确的sorting清单(如第一个例子)的方便的-V开关。 现在,我必须将此脚本移植到OSX,并且在OSX中sort是缺less-V开关。 你有一个聪明的想法如何正确地sorting此列表?

在linux中打开文件夹窗口的标准方法?

我想在跨平台(windows / mac / linux)的Python应用程序中,在相应的文件pipe理器中打开一个文件夹窗口。 在OSX上,我可以用finder打开一个窗口 os.system('open "%s"' % foldername) 并在Windows上 os.startfile(foldername) 那么unix / linux呢? 有没有一个标准的方法来做到这一点,或者我有特殊情况下gnome / kde / etc和手动运行适当的应用程序(鹦鹉螺/ konqueror /等)? 这看起来像freedesktop.org人们可以指定的东西(一个python模块,类似于webbrowser ,也会很好!)。

我需要debuggingpthreads?

我想debugging我的自定义Linux发行版上的pthreads,但我错过了一些东西。 我的主机是Ubuntu 12.04,我的目标是使用crosstool-NG交叉编译器工具集构build的i486定制embedded式Linux,其余的操作系统是使用Buildroot制作的。 我将列举事实: 我可以在我的目标上运行multithreading应用程序 当我在目标上运行multithreading应用程序时, Google Breakpad无法创build崩溃报告。 当我在我的主机上运行完全相同的应用程序与完全相同的构buildBreakpad库将成功。 GDB无法在我的目标上debuggingmultithreading应用程序。 例如 $./gdb -n -ex "thread apply all backtrace" ./a.out –pid 716 dlopen failed on 'libthread_db.so.1' – /lib/libthread_db.so.1: undefined symbol: ps_lgetfpregs GDB will not be able to debug pthreads. GNU gdb 6.8 我不认为ps_lgetfpregs是因为这个问题。 我的crosstool构build了libthread_db.so文件,并将其放在目标上。 我的crosstool构build为我的目标创build了gdb,所以它应该与我在目标上运行的库相链接。 如果我在我的主机上运行gdb,对我的testing应用程序,我得到每个运行线程的回溯。 我怀疑Breakpad的问题与GDB的问题有关,但是我不能证实这一点。 唯一的共同点是缺乏multithreadingdebugging。 我的主机和目标之间有一些关键的区别阻止了我能够debugging目标上的pthreads。 有谁知道它是什么? 编辑: TI的Denys Dmytriyenko表示: 通常情况下,GDB不是很挑剔,你可以混合使用不同版本的gdb和gdbserver。 但是,不幸的是,如果您需要debuggingmultithreading应用程序,那么对于特定的API有一些依赖关系… 例如,如果您没有为线程支持正确构buildGDB,则可能会看到以下消息之一: […]

C / C ++中的跨平台unicode:使用哪种编码?

我目前正在开发一个应该在Windows和Linux上工作的业余爱好项目(C / C ++),全面支持Unicode。 可悲的是,Windows和Linux使用不同的编码,使我们的生活更加困难。 在我的代码中,我试图尽可能地使用数据,使Windows和Linux都变得简单。 在Windows中,默认情况下,wchar_t被编码为UTF-16,在Linux中被编码为UCS-4(如果我错了,请纠正我的错误)。 我的软件打开({_wfopen,UTF-16,Windows},{fopen,UTF-8,Linux})并将数据写入UTF-8文件。 到目前为止,这都是可行的。 直到我决定使用SQLite。 SQLite的C / C ++接口允许一个或两个字节的编码string( 单击 )。 当然这在Linux中不适用于wchar_t,因为Linux中的wchar_t默认是4字节。 因此,从sqlite的写入和读取需要转换为Linux。 目前,代码在Windows / Linux的例外情况下正在混乱。 我希望坚持在wchar_t中存储数据的标准思想: Windows中的wchar_t:文件path没有问题,读写sqlite没有问题。 无论如何,将数据写入文件应该使用UTF-8。 Linux中的wchar_t:由于UTF-8编码导致的文件pathexception,读/写到sqlite(wchar_t)之前的转换,以及将数据写入文件时的相同。 读完( 在这里 )我确信我应该坚持在Windows中的wchar_t。 但是在完成所有工作之后,麻烦就从移植到Linux开始了。 目前我正在考虑重做这一切,以坚持简单的字符(UTF-8),因为它适用于Windows和Linux,记住,我需要'WideCharToMultiByte'在Windows中的每个string来实现UTF-8。 使用简单的基于char *的string将大大减lessLinux / Windows的例外数量。 你有任何跨平台unicode的经验吗? 任何关于简单地将数据存储在UTF-8而不是使用wchar_t的想法?

文本编辑器与脚本…为Linux

有一段时间了,我一直在Windows上使用UltraEdit。 用熟悉的语言(JavaScript)编写脚本的能力已被certificate是非常有用的。 唯一的问题是,我不能在我的Linux机器上使用它。 是否有一个可在Linux上运行的文本编辑器,并具有集成的脚本引擎? 不破坏银行和跨平台将是伟大的。 编辑:虽然可录制的macros是伟大的,我更多地使用脚本引擎。

SCHED_OTHER / SCHED_FIFO的pthread sched_get_priority_min / max实现

我正在为我正在编写的一个项目编写一个半可移植的线程类,并且在设置线程的优先级时,遇到了pthread世界中的一个难题。 给出以下代码: #include <stdio.h> #include <unistd.h> #include <sched.h> main() { printf("Valid priority range for SCHED_OTHER: %d – %d\n", sched_get_priority_min(SCHED_OTHER), sched_get_priority_max(SCHED_OTHER)); printf("Valid priority range for SCHED_FIFO: %d – %d\n", sched_get_priority_min(SCHED_FIFO), sched_get_priority_max(SCHED_FIFO)); printf("Valid priority range for SCHED_RR: %d – %d\n", sched_get_priority_min(SCHED_RR), sched_get_priority_max(SCHED_RR)); } 在OpenBSD中,这将打印下面的内容: Valid priority range for SCHED_OTHER: 0 – 31 Valid priority range for SCHED_FIFO: […]

我如何在Linux上编译与所有发行版共享?

我在Fedora Core 12上编译了一个PHP扩展,但是当我把它发送给使用CentOS的人时,他们得到错误:“ELF file OS ABI invalid” 我不确定是什么原因导致这个正在运行的文件提供了以下信息:ELF 64位LSB共享对象,AMD x86-64,版本1(GNU / Linux),没有剥离 加载正常的扩展从文件中提供以下内容:ELF 64位LSB共享对象,AMD x86-64,版本1(SYSV),未删除 所以看来我需要为某些发行版产生一个SYSVtypes文件,而不是GNU / LINUX文件,不知道如何。 任何指针? 也应该静态链接?

什么是各种Qt平台插件的使用?

我正在为基于ARM的目标(TI AM335x EVM)进行一些Qt5.2应用程序的交叉编译,并且无法在我的平台上显示任何东西。 在做了一些谷歌search之后,我发现如果我用以下方式启动它: ./helloworld -platform eglfs 它会显示(全屏幕,但它的工作)! 我开始考虑所有的平台选项,我发现: android,eglfs,linuxfb,minimalegl,windows,xcb,cocoa,ios,offscreen,qnx,directfp,kms,最小,openwfd 我想知道他们是为了什么。 例如,我假设如果我想在Android设备上运行我的应用程序,则必须传递-platform android ,但它们对我来说并不明显。 是否有任何地方应该使用这些参数的每一个? 例如, eglfs代表什么? 为什么我需要使用那个在linuxfb没有工作? (我会认为linux的帧缓冲是我想要启动我的应用程序,因为它是在embedded式Linux上运行)