是否有类似的HTTP客户端wget/lynx/GET默认分发在POSIX或*nix操作系统中,可用于最大程度的可移植性?
我知道大多数系统都有wget或lynx安装,但我似乎记得使用默认设置安装一些Ubuntu的服务器系统,他们既没有wget或lynx安装在基本包.
我正在为Linux(可能还有Mac)编写一个shell脚本,将一个软件安装到计算机上.为了防止分发几个大文件,我想从互联网上获取这些文件,而不是使用安装程序打包.目前,安装脚本将分发在从Makeself创建的单个文件中.
我想避免安装脚本超过100 MB,如果包含文件将是如此,如果此人正在升级或重新安装软件,也可能不需要它们.也许最便携的事情是包括pacakage中的文件.
现在我只是在想具有用于脚本检查wget,lynx以及GET以该顺序,它会使用哪一个它可以下载,但我可以完全避免这个,如果有办法,我可以下载,将工作中的文件所有系统.
编辑:
有没有人对lwp-request(GET)及其可用性了解多少?这似乎在我迄今为止检查过的几个系统上都很容易获得,我记得这一直是大约10年多以前回到RedHat.
你们通常如何删除Linux操作系统上的文件?我正在考虑使用unlink函数调用,但我想知道你是否有更好的想法,因为C++标准没有提到文件删除操作,它是系统相关的.
我最近遇到了在一段精确时间内睡眠当前线程的需要.我知道在POSIX平台上这样做的两种方法:使用nanosleep()或使用boost::this_thread::sleep().
出于好奇心,我想知道这两种方法之间的差异是什么.精度有什么不同,有没有理由不使用Boost方法?
nanosleep() 做法:
#include <time.h>
...
struct timespec sleepTime;
struct timespec returnTime;
sleepTime.tv_sec = 0;
sleepTime.tv_nsec = 1000;
nanosleep(&sleepTime, &returnTime);
Run Code Online (Sandbox Code Playgroud)
提升方法:
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/thread/thread.hpp>
...
boost::this_thread::sleep(boost::posix_time::nanoseconds(1000));
Run Code Online (Sandbox Code Playgroud) 我怎么知道我的shell是什么类型的?即,它是传统的sh,bash,ksh,csh,zsh等.
请注意,检查$SHELL或$0不起作用,因为$SHELL并非由所有shell设置,因此如果您从一个shell开始,然后启动另一个shell,您可能仍然使用旧的shell $SHELL.
$0只告诉你shell二进制文件的位置,但不告诉你/bin/sh是真正的Bourne shell还是bash.
我认为答案将是"尝试一些功能,看看有什么打破",所以如果有人能指出我这样做的脚本,那就太好了.
我有一个使用mmap系统调用的应用程序,我有一个问题,让它编译几个小时,看看为什么我得到MAP_ANON和MAP_ANONYMOUS未声明,我有一个较小的代码部分,我用过,我看到我可以编译它就好了,所以我尝试了一个基本的编译,这工作,我看到它添加-std = c99失败.是否有特定原因导致MAP_ANON和MAP_ANONYMOUS在C99标准中无效?我知道它们不是由POSIX定义的,而是由BSD SOURCE定义的,所以我只想知道为什么会这样.
如何在不使用程序中的环境(getenv,...)的情况下获取实际的"用户名"?
抱歉这个愚蠢的问题,搜索但不自信是找到正确的答案,所以默认的分隔符只是awk的空间?
我最近发现Linux不保证分配的内存mmap可以释放,munmap如果这导致VMA(虚拟内存区域)结构数超过的情况vm.max_map_count.Manpage(几乎)清楚地说明了这一点:
ENOMEM The process's maximum number of mappings would have been exceeded.
This error can also occur for munmap(), when unmapping a region
in the middle of an existing mapping, since this results in two
smaller mappings on either side of the region being unmapped.
Run Code Online (Sandbox Code Playgroud)
问题是Linux内核总是尝试合并VMA结构,munmap即使对于单独创建的映射也会失败.我能够编写一个小程序来确认这种行为:
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/mman.h>
// value of vm.max_map_count
#define VM_MAX_MAP_COUNT (65530)
// number of vma for the empty process linked against libc …Run Code Online (Sandbox Code Playgroud)