How to get input while outputting?
php editor Apple will introduce you to a common question today: In PHP, when we need to obtain user input, how should we output it? Obtaining user input is an important part of writing interactive programs, so it is important to master the correct method. In PHP, we can use some built-in functions to obtain user input, such as using the `fgets()` function to read a line of user input from the standard input, or using the `fgetc()` function to read from the standard input Take a character. Of course, we can also use the `$_GET` or `$_POST` superglobal variables to obtain the data submitted by the user through the form. No matter which method is used, you need to pay attention to the necessary validation and filtering of user input to ensure the security and stability of the program. I hope the above introduction can help everyone!
Question content
What I want to achieve is some kind of application that logs a large amount of information to the console (for example, a number from 0 to 1000000000000) and is able to pass in the console Type a command to stop execution (such as "stop").
I came up with the idea of using goroutine, however, I cannot enter the command because the input field is changing to output.
This is my code:
package main import ( "bufio" "os" ) var process bool = true func commandHandler() { reader := bufio.NewReader(os.Stdin) for process { text, _ := reader.ReadString('\n') if text == "stop\r\n" { process = false } } } func task() { var i int64 = 0 for ; i < 10000000000 || process; i++ { if i%30000000 == 0 { // Just to slow down an output for a while println(i) } } } func main() { go task() commandHandler() }
and the results I get. The letters are the input I'm trying to enter and the numbers are the output from the application
Any suggestions on how to do proper input/output in my go application?
Workaround
I cannot enter the command because the input field is changing to output
You can enter commands normally. As you type them, they are echoed to your console. This will be combined with everything else output to the console, which may confuse the user - but not the computer.
Assuming this actually matches your operating system, your program runs just fine:
if text == "stop\r\n" {
Not available on my operating system \r
. A more portable way is to use strings.trimspace
to remove all spaces.
import ( ... "strings" ) ... ... if strings.TrimSpace(text) == "stop" {
With this change, the code works for me. As you said, the output and input are inserted to the screen, but you can still type stop
and end the program.
Any suggestions on how to do proper input/output in my go application?
Almost no terminal programs in the real world are interactive. Instead, command line arguments and environment variables provide its configuration when called. Shell redirection is typically used to preserve (in a file) or page (e.g. |less
) any long output from a program.
You'll see a lot of academic programming using the interactive terminal model, where the program prompts the user and collects data, but in the real world this is very rare and often an unwise complication. Standard input is typically used to provide data input required for calculations, rather than user commands (such as data to be manipulated or filtered).
As @tinkerer suggested, signals can already be used to terminate your program (details are operating system specific). So there's really no need to worry about how the terminal application handles the visual representation of standard input and output, which are interpolated just to terminate the program. There are many other signals in the posix environment, some of which are entirely user-facing and can be used for any purpose.
Once the runtime requires more complex user input, the program will typically listen for commands on a socket. For such programs, web interfaces providing http services are becoming more and more common due to simplicity and accessibility.
The above is the detailed content of How to get input while outputting?. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



layui provides a variety of methods for obtaining form data, including directly obtaining all field data of the form, obtaining the value of a single form element, using the formAPI.getVal() method to obtain the specified field value, serializing the form data and using it as an AJAX request parameter, and listening Form submission event gets data.

Layui login page jump setting steps: Add jump code: Add judgment in the login form submit button click event, and jump to the specified page through window.location.href after successful login. Modify the form configuration: add a hidden input field to the form element of lay-filter="login", with the name "redirect" and the value being the target page address.

There are the following methods for front-end and back-end interaction using layui: $.ajax method: Simplify asynchronous HTTP requests. Custom request object: allows sending custom requests. Form control: handles form submission and data validation. Upload control: easily implement file upload.

Servlet serves as a bridge for client-server communication in Java Web applications and is responsible for: processing client requests; generating HTTP responses; dynamically generating Web content; responding to customer interactions; managing HTTP session state; and providing security protection.

Steps to build a single-page application (SPA) using PHP: Create a PHP file and load Vue.js. Define a Vue instance and create an HTML interface containing text input and output text. Create a JavaScript framework file containing Vue components. Include JavaScript framework files into PHP files.

In Vue.js, event is a native JavaScript event triggered by the browser, while $event is a Vue-specific abstract event object used in Vue components. It is generally more convenient to use $event because it is formatted and enhanced to support data binding. Use event when you need to access specific functionality of the native event object.

JavaServlet can be used for: 1. Dynamic content generation; 2. Data access and processing; 3. Form processing; 4. File upload; 5. Session management; 6. Filter. Example: Create a FormSubmitServlet to handle form submission, taking name and email as parameters, and redirecting to success.jsp.

Vue.js event modifiers are used to add specific behaviors, including: preventing default behavior (.prevent) stopping event bubbling (.stop) one-time event (.once) capturing event (.capture) passive event listening (.passive) Adaptive modifier (.self)Key modifier (.key)
