A Process 创建一个子进程,将 x 加 1,然后将 x 值发送给子进程,然后子进程可以将 x 乘以 10,并将 x 传递回父进程等等。你至少应该这样做5次。
输出应如下所示:
初始值 0
家长:
操作后的 x 值:1
孩子:
操作后的 x 值:10
家长:
操作后的 x 值:11
孩子:
操作后的 x 值:110
家长:
操作后的 x 值:111
孩子
操作后的 x 值:1110
我所拥有的是以下......
#include <sys/types.h>
#include <stdio.h>
#include <unistd.h>
#include <sys/syscall.h>
#define READ 0
#define WRITE 1
int main()
{
pid_t pid;
int mypipefd[2];
int ret;
int i;
int x=0;
int result,result2;
ret = pipe(mypipefd);
if(ret ==-1) //test for pipe
{
perror("pipe"); …Run Code Online (Sandbox Code Playgroud) 我有一个数字2014061200,我试图提取这个数字的个位 ( 0) 并将其设置为一个变量$STR,这样$STR就等于0,因为它位于上述数字的位置。
我制作了一个 shell 脚本,显示以下内容:
$NUM=2014061200
$STR= $NUM | tail -c 2
echo $STR
Run Code Online (Sandbox Code Playgroud)
但是,当我这样做时,我得到一个空白,$STR而不是预期的结果 0。我的意思是当我输入时
echo $NUM | tail -c 2,我确实得到了 0 的输出,但是如何将其转换为变量?
谢谢
我是 golang 的新手,我在理解 go's 时遇到了问题io.Pipe。这类似于 node.js'.pipe吗?我应该如何使用它?是否可以将它与 1 个读取文件和一个写入文件一起使用?
在此先感谢各位。
我正在尝试编写一个安装 (bash) 脚本,我需要在其中检查用户是否安装了 java 1.8。
最明显的方法是调用
javac -version | grep 1.8
Run Code Online (Sandbox Code Playgroud)
,但由于一些奇怪的原因 javac (和 java) -version 输出不能被重定向 - 不能通过 |、> 或 >> - 在第一种情况下,第二个程序没有得到任何输入,在第二个和第三个中,执行命令后输出文件为空。我试图在三台不同的机器上检查它,结果在每台机器上都是一样的。
那是什么原因呢?有没有其他方法可以检查java版本?
我正在尝试编写一个我logAction专门调用的函数,该函数Ksh从管道读取输入并在同一个函数调用中接受参数。我一直在尝试调试这个 2 周,在谷歌和这样的网站上搜索。
我尝试创建的函数的目的是简化将输出记录到我开发的其他脚本的日志文件的过程。我打算在各种情况下使用该命令,但最容易描述和说明我正在尝试的两种情况类似于以下内容:
语法示例 1:
logAction 1 "Script executed some action."
Run Code Online (Sandbox Code Playgroud)
语法示例 2:
COMMAND1 | COMMAND2 | logAction 1
Run Code Online (Sandbox Code Playgroud)
如您所见,我希望能够将预期的日志信息作为参数或作为 stdinput 通过管道传递给函数,以便捕获命令序列的输出。第三种情况是在管道输出之前添加一些文本,即
语法示例 3:
COMMAND1 | COMMAND2 | logAction 1 "This is the output: "
Run Code Online (Sandbox Code Playgroud)
下面的输出说明了使用示例 3 中的语法的结果:
[2015/12/28 10:20:32] This is the output: <Output from COMMAND1 | COMMAND 2>
Run Code Online (Sandbox Code Playgroud)
这是我尝试创建的函数的基本框架。
function logAction {
while read -t 0 -u 0 stdinput
do
echo "StdInput:'$stdinput'"
pipedinput=$stdinput
done
pipedinput=${pipedinput:-}
case $1 in
1) #Output text only to …Run Code Online (Sandbox Code Playgroud) 如何在不“等待”结果 exec 返回的情况stdout下将exec命令的“刷新”到我的脚本中stdout?
例如,在以下脚本中,我希望git clone输出立即出现在我的脚本上下文中:
#!/usr/bin/tclsh
# git outputs progress of the clone download but it isn't visible in this script's context. How can I flush it?
exec git clone /path/to/some/repo.git
Run Code Online (Sandbox Code Playgroud)
我猜我需要某种pipe "|"和tee和文件重定向的组合。似乎无法正确理解。
我有这个示例代码:
find "$1" ! -regex "$regex" 2>/dev/null | while read line ; do
a="$line"
done
echo ("$a") # prints nothing because of subshell
Run Code Online (Sandbox Code Playgroud)
我需要:
$a外部(在全局范围内)可见的解决方法我怎样才能做到这一点?有什么简单的解决办法吗?
当我在 sed 中构造一个复杂的操作时,我经常从
cat infile | sed 'expression1' | sed 'expr2' ...
Run Code Online (Sandbox Code Playgroud)
然后将其优化为
cat infile | sed 'expr1;expr2;expr3' | sed 'expr4' | sed 'expr5;expr6' ...
Run Code Online (Sandbox Code Playgroud)
对于哪些表达式可以与分号组合成单个命令,有哪些指导原则?到目前为止,我只是临时组合s///,而不是组合//d。
(优化是为了运行它数千万次。是的,它明显更快。)
(发布在这里而不是在 superuser.com 上,因为那里关于 sed 的问题少了 20 倍。)
这是架构:
客户端向服务器 A 发送 POST 请求
服务器 A 处理这个并向服务器 B 发送一个 GET
服务器 B 通过 A 向客户端发送响应
我虽然最好的想法是制作一个管道来读取 GET 的响应,并写入 POST 的响应,但我遇到了很多类型的问题。
func main() {
r := mux.NewRouter()
r.HandleFunc("/test/{hash}", testHandler)
log.Fatal(http.ListenAndServe(":9095", r))
}
func handleErr(err error) {
if err != nil {
log.Fatalf("%s\n", err)
}
}
func testHandler(w http.ResponseWriter, r *http.Request){
fmt.Println("FIRST REQUEST RECEIVED")
vars := mux.Vars(r)
hash := vars["hash"]
read, write := io.Pipe()
// writing without a reader will deadlock so write in a goroutine
go func() {
write, …Run Code Online (Sandbox Code Playgroud) 因此,我有一个过滤管道并使用它来过滤城市列表以仅显示那些包含搜索词的城市。
import {Pipe, PipeTransform} from '@angular/core';
@Pipe({ name: 'filter' })
export class FilterPipe implements PipeTransform{
transform(value: any, arg: string) {
var searchTerm = arg ? arg : '';
searchTerm = searchTerm.toUpperCase();
if (value == null) return null;
return value.filter(el => el.City.toUpperCase().indexOf(searchTerm) !== -1);
}
}
Run Code Online (Sandbox Code Playgroud)
但是我拥有的城市数组中有 5000 个项目,所以我使用切片管只显示其中的五个。
<form [formGroup]="form">
<input formControlName="search" type="text">
<div>
<li
*ngFor="let city of cities | filter:searchTerm | slice:0:5"
(click)="PasteCity(city.City)">
{{ city.City }}
</li>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
但是有一个问题。我需要向用户显示找到了多少个城市,例如“显示了 5 0f 631 个城市”。据我尝试,ViewChildren索引*ngFor方法的最后一个元素只会让我得到显示的城市数量,而不是过滤器找到的......但是在尝试使用时ViewChildren …